﻿@using System.Web.Http
@using System.Web.Http.Controllers
@using System.Web.Http.Description
@using System.Collections.ObjectModel
@using epalpay.api.help.Models
@model Collection<ApiDescription>
@section style{
	<link type="text/css" href="~/Content/HelpPage.css" rel="stylesheet" />
}
@{
    ViewBag.Title = "接口文档";

    // Group APIs by controller
    ILookup<HttpControllerDescriptor, ApiDescription> apiGroups = Model.ToLookup(api => api.ActionDescriptor.ControllerDescriptor);
}
<header class="help-page">
    <div class="content-wrapper">
        <div class="float-left">
            <h1>@ViewBag.Title</h1>
        </div>
    </div>
</header>
<div id="body" class="help-page">
    <section class="featured">
        <div class="content-wrapper">
            <h2>用户认证</h2>
            <p>
                令牌（access_token）：
                登录用户的令牌,除注册、登录、退出、找回密码等开放接口外，均需传递本参数
                Header中增加Authorization参数，值是Bearer access_token值（注意Bearer后面是一个空格是必须的）;
            </p>
            <p>时间截（timestamp）：Headers中的参数，格式是yyyy-MM-dd HH:mm:ss</p>
            <p>随机数（nonce）：Headers中的参数，格式是8位数字</p>
            <p>合作号（partner）：Headers中的参数,partnerKey和合作号一对一的关系，partnerKey不能暴露在参数中，所有接口都必须传partner；</p>
            <p>
                签名（sign）：组织原始请求参数字符串，顺序是先get(query)后post(from)，要按键的字母顺序排列组合成键=值的字符串，并且把partnerKey加到字符串最后面，最后将字符串加密成32位MD5通过参数sign加到Request Headers中；
                <code>
                    如：
					<p>get的参数是key,key1;post参数是key2，并且ContentType采用是application/x-www-form-urlencoded，那么组合后是key=value&key1=value1key2=value2;
					如果ContentType采用是application/json时，那么参数就是{"key2"="value2"}，那么组合后是key=value&key1=value1{"key2"="value2"};（注意字符串的头尾不能有&），</p>
					<p>partnerKey=abc，timestamp=1487325365691,nonce=23823,</p>
					<p>sign规则=query+from+otherjson+partnerKey+timestamp+nonce</p>
					<p>最后字符串是key=value&key1=value1key2=value2abc148732536569123823，或者key=value&key1=value1{"key2"="value2"}abc148732536569123823，最后md5加密 </p>
					<p>@Pay.Core.SecureHelper.MD5("key=value&key1=value1key2=value2abc148732536569123823")；或者
					@Pay.Core.SecureHelper.MD5("key=value&key1=value1{\"key2\"=\"value2\"}abc148732536569123823")
                    </p>
                </code>
            </p>
			<code>关于access_token有效，有效时间是10分钟，在应用端要做一个快到10分钟就提交account/refresh（异步线程处理），用原来access_token，换取新的access_token，保障应用端的正确使用</code>
            <h2>接口返回内容说明</h2>
            <p>result_code:默认1000表示成功，其它失败</p>
            <p>result_msg:返回执行结果消息</p>
            <p>data:data是业绩结果：可能无</p>
			<h2>图片相关接口</h2>
			<code>1.上传图片的接口是http://47.89.48.28:3003/upload/{id}，采用POST,id头像是profile，商品是goods，供应是info,评论comment,聊天chat，返回图片路径</code>
			<p></p>
			<code>2.浏览图片的地址是http://47.89.48.28:3003/images/profile/1600df033761409082490643ef2901a0.jpg_1_640_428_0.jpg，
			其中/images/profile/1600df033761409082490643ef2901a0.jpg是服务器返回，_1_640_428_0的第一参数表示1居中切图，2等比例缩;
			第二个参数是指图片宽;第三个参数是指图片高;第四个参数0表示JPG,1表示高质量，目前第一和第四都固定1和0</code>
        </div>
    </section>
    <section class="content-wrapper main-content clear-fix">
        @foreach (var group in apiGroups) {
            @Html.DisplayFor(m => group, "ApiGroup")
        }
    </section>
</div>
